package com.AdvancedDemos.正则表达式;

import java.util.Arrays;

public class 正则表达式用于搜索替换分割内容 {
    public static void main(String[] args) {
        /**
         * 1、public string replaceAll(String regex , String newStr) --- 按照正则表达式匹配的内容进行替换
         *
         * 需求1:请把古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴，中间的非中文字符替换成"-"
         *
         * 需求2(拓展):某语音系统，收到一个口吃的人说的"我我我喜欢编编编编编编编编编编编编程程程!"，需要优化成"我喜欢编程! "。
         */
        String str1 = "古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴";
        String result1 = str1.replaceAll("\\w+", "-");
        System.out.println("替换后的字符串为:" + result1);//替换后的字符串为:古力娜扎-迪丽热巴-马尔扎哈-卡尔扎巴

        String str2 = "我我我喜欢编编编编编编编编编编编编程程程!";
        String result2 = str2.replaceAll("(.)\\1+", "$1");
        /*(.)为一个组,.匹配任意字符
         * \\1为这个组声明一个组号,1号组
         * +声明必须是至少一次
         * $1代表的就是1号组的内容,即代表重复的那个字符*/
        System.out.println(result2);//我喜欢编程!

        /**
         * 2、public String[] split(String regex) --- 按照正则表达式匹配的内容进行分割字符串，反回一个字符串数组.
         *
         * 需求1:请把古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴，中的人名获取出来。
         */
        String str3 = "古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴";
        String[] names = str3.split("\\w+");
        System.out.println(Arrays.toString(names));//[古力娜扎, 迪丽热巴, 马尔扎哈, 卡尔扎巴]
    }
}
